package testBingMap;

import java.io.Serializable;
import java.util.Date;
import java.util.Set;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;

/**
 * @author cssj
 * 
 *         TODO I (cjsr) have misgivings about the way the groupInternalId works. This class
 *         has a
 *         member Group as well as a groupInternalId. It is very easy to get these out of
 *         synch.
 *         I wanted to change this to delegate to the group, but that would break the way
 *         hibernate maps. I didn't want to get into that, so I chose to leave this class
 *         alone,
 *         except for making this comment.
 */
@XmlType(propOrder = {})
@XmlAccessorType(XmlAccessType.FIELD)
public class Member implements Serializable {
	private static final long serialVersionUID = 5L;

	@XmlElement
	private MemberPK memberPK;
	@XmlElement
	private String address1;
	@XmlElement
	private String address2;

	@XmlElement
	private Date addTimestamp;
	@XmlElement
	private String alternateId;
	@XmlElement

	@XmlSchemaType(name = "date")
	private Date birthDate;

	@XmlElement
	private String caseId;
	@XmlElement
	private String city;
	@XmlElement
	private String firstName;
	@XmlElement
	private String freeForm1;
	@XmlElement
	private String middleInitial;
	@XmlElement
	private String miscData1;
	@XmlElement
	private String miscData2;
	@XmlElement
	private String miscData3;
	@XmlElement
	private String phoneNumber;
	@XmlElement
	private String preferredCommunicationCode;
	@XmlElement
	private String state;
	@XmlElement
	private String zipCode;
	@XmlElement
	private String zipPlusFourCode;

	/**
	 * Blank.
	 */
	public Member() {
	}

	/**
	 * Copy constructor.
	 * 
	 * @param member
	 *            member
	 */
	public Member(Member member) {
		memberPK = member.memberPK;
		address1 = member.address1;
		address2 = member.address2;
		addTimestamp = member.addTimestamp;
		alternateId = member.alternateId;
		birthDate = member.birthDate;
		caseId = member.caseId;
		city = member.city;
		firstName = member.firstName;
		freeForm1 = member.freeForm1;
		middleInitial = member.middleInitial;
		miscData1 = member.miscData1;
		miscData2 = member.miscData2;
		miscData3 = member.miscData3;
		phoneNumber = member.phoneNumber;
		preferredCommunicationCode = member.preferredCommunicationCode;
		state = member.state;
		zipCode = member.zipCode;
		zipPlusFourCode = member.zipPlusFourCode;
	}

	/**
	 * @return the address1
	 */
	public String getAddress1() {
		return address1;
	}

	/**
	 * @return the address2
	 */
	public String getAddress2() {
		return address2;
	}

	/**
	 * @return the addTimestamp
	 */
	public Date getAddTimestamp() {
		return addTimestamp;
	}

	/**
	 * @return the alternateId
	 */
	public String getAlternateId() {
		return alternateId;
	}

	/**
	 * @return the birthDate
	 */
	public Date getBirthDate() {
		return birthDate;
	}

	/**
	 * @return the caseId
	 */
	public String getCaseId() {
		return caseId;
	}

	/**
	 * @return the city
	 */
	public String getCity() {
		return city;
	}


	/**
	 * @return the firstName
	 */
	public String getFirstName() {
		return firstName;
	}

	/**
	 * @return the freeForm1
	 */
	public String getFreeForm1() {
		return freeForm1;
	}


	/**
	 * @return the middleInitial
	 */
	public String getMiddleInitial() {
		return middleInitial;
	}

	/**
	 * @return the miscData1
	 */
	public String getMiscData1() {
		return miscData1;
	}

	/**
	 * @return the miscData2
	 */
	public String getMiscData2() {
		return miscData2;
	}

	/**
	 * @return the miscData3
	 */
	public String getMiscData3() {
		return miscData3;
	}

	/**
	 * @return the phoneNumber
	 */
	public String getPhoneNumber() {
		return phoneNumber;
	}

	/**
	 * @return the preferredCommunicationCode
	 */
	public String getPreferredCommunicationCode() {
		return preferredCommunicationCode;
	}

	/**
	 * @return the state
	 */
	public String getState() {
		return state;
	}

	/**
	 * @return the zipCode
	 */
	public String getZipCode() {
		return zipCode;
	}

	/**
	 * @return the zipPlusFourCode
	 */
	public String getZipPlusFourCode() {
		return zipPlusFourCode;
	}

	/**
	 * @param address1
	 *            the address1 to set
	 */
	public void setAddress1(String address1) {
		this.address1 = address1;
	}

	/**
	 * @param address2
	 *            the address2 to set
	 */
	public void setAddress2(String address2) {
		this.address2 = address2;
	}

	/**
	 * @param addTimestamp
	 *            the addTimestamp to set
	 */
	public void setAddTimestamp(Date addTimestamp) {
		this.addTimestamp = addTimestamp;
	}

	/**
	 * @param alternateId
	 *            the alternateId to set
	 */
	public void setAlternateId(String alternateId) {
		this.alternateId = alternateId;
	}

	/**
	 * @param birthDate
	 *            the birthDate to set
	 */
	public void setBirthDate(Date birthDate) {
		this.birthDate = birthDate;
	}

	/**
	 * @param caseId
	 *            the caseId to set
	 */
	public void setCaseId(String caseId) {
		this.caseId = caseId;
	}

	/**
	 * @param city
	 *            the city to set
	 */
	public void setCity(String city) {
		this.city = city;
	}

	/**
	 * @param firstName
	 *            the firstName to set
	 */
	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}

	/**
	 * @param freeForm1
	 *            the freeForm1 to set
	 */
	public void setFreeForm1(String freeForm1) {
		this.freeForm1 = freeForm1;
	}



	/**
	 * @param middleInitial
	 *            the middleInitial to set
	 */
	public void setMiddleInitial(String middleInitial) {
		this.middleInitial = middleInitial;
	}

	/**
	 * @param miscData1
	 *            the miscData1 to set
	 */
	public void setMiscData1(String miscData1) {
		this.miscData1 = miscData1;
	}

	/**
	 * @param miscData2
	 *            the miscData2 to set
	 */
	public void setMiscData2(String miscData2) {
		this.miscData2 = miscData2;
	}

	/**
	 * @param miscData3
	 *            the miscData3 to set
	 */
	public void setMiscData3(String miscData3) {
		this.miscData3 = miscData3;
	}

	/**
	 * @param phoneNumber
	 *            the phoneNumber to set
	 */
	public void setPhoneNumber(String phoneNumber) {
		this.phoneNumber = phoneNumber;
	}

	/**
	 * @param preferredCommunicationCode
	 *            the preferredCommunicationCode to set
	 */
	public void setPreferredCommunicationCode(String preferredCommunicationCode) {
		this.preferredCommunicationCode = preferredCommunicationCode;
	}
	/**
	 * @param state
	 *            the state to set
	 */
	public void setState(String state) {
		this.state = state;
	}

	/**
	 * @param zipCode
	 *            the zipCode to set
	 */
	public void setZipCode(String zipCode) {
		this.zipCode = zipCode;
	}

	/**
	 * @param zipPlusFourCode
	 *            the zipPlusFourCode to set
	 */
	public void setZipPlusFourCode(String zipPlusFourCode) {
		this.zipPlusFourCode = zipPlusFourCode;
	}

	/**
	 * @param memberPK
	 *            the memberPK to set
	 */
	public void setMemberPK(MemberPK memberPK) {
		this.memberPK = memberPK;
	}

	/**
	 * @return the memberPK
	 */
	public MemberPK getMemberPK() {
		return memberPK;
	}

}
